#include "gamescene.hpp"

namespace VN{
    void GameScene::MainFadein1(GameScene* g){
        Uint8 a;
        SDL_GetTextureAlphaMod(g->main_back->cg,&a);
        SDL_SetTextureAlphaMod(g->main_back->cg,a+5);
    }
    void GameScene::MainFadein2(GameScene* g){
        g->main_back->handle=false;
        g->_belong->AddTask((void(*)(void*))MainFadein3,g,51,true,false);
    }
    void GameScene::MainFadein3(GameScene* g){
        Uint8 a;
        SDL_GetTextureAlphaMod(g->start_game->_t,&a);
        SDL_SetTextureAlphaMod(g->start_game->_t,a+5);
        SDL_SetTextureAlphaMod(g->load->_t,a+5);
        SDL_SetTextureAlphaMod(g->enter_cg->_t,a+5);
        SDL_SetTextureAlphaMod(g->main_option->_t,a+5);
        SDL_SetTextureAlphaMod(g->quit->_t,a+5);
    }
    void GameScene::EnterMain(){
        bgm_text->SetVisible(false);
        bgm_text->SetEnable(false);
        music_list->SetVisible(false);
        music_list->SetEnable(false);
        language_select->SetEnable(false);
        language_select->SetVisible(false);
        _enabled=false;
        _visible=true;
        save_name->SetEnable(false);
        save_name->SetVisible(false);
        go_option->SetEnable(false);
        go_option->SetVisible(false);
        main_option->SetVisible(true);
        main_option->SetEnable(true);
        go_save->SetEnable(false);
        go_save->SetVisible(false);
        go_load->SetEnable(false);
        go_load->SetVisible(false);
        in_main=true;
        general_back->SetVisible(false);
        general_back->SetEnable(false);
        main_back->SetVisible(true);
        start_game->SetVisible(true);
        load->SetVisible(true);
        enter_cg->SetVisible(true);
        quit->SetVisible(true);
        main_back->SetEnable(false);
        start_game->SetEnable(true);
        load->SetEnable(true);
        enter_cg->SetEnable(true);
        quit->SetEnable(true);
        cg_go_back->SetEnable(false);
        cg_view->SetEnable(false);
        save_go_back->SetEnable(false);
        confirm->SetEnable(false);
        save_list->SetEnable(false);
        option_go_back->SetEnable(false);
        effect_box->SetEnable(false);
        music_box->SetEnable(false);
        effect_bar->SetEnable(false);
        music_bar->SetEnable(false);
        speed_normal->SetEnable(false);
        speed_fast->SetEnable(false);
        effect_text->SetEnable(false);
        music_text->SetEnable(false);
        speed_text->SetEnable(false);
        auto_play->SetEnable(false);
        name->SetEnable(false);
        game_back->SetEnable(false);
        dialog->SetEnable(false);
        cg_go_back->SetVisible(false);
        cg_view->SetVisible(false);
        save_go_back->SetVisible(false);
        confirm->SetVisible(false);
        save_list->SetVisible(false);
        option_go_back->SetVisible(false);
        effect_box->SetVisible(false);
        music_box->SetVisible(false);
        effect_bar->SetVisible(false);
        music_bar->SetVisible(false);
        speed_normal->SetVisible(false);
        speed_fast->SetVisible(false);
        effect_text->SetVisible(false);
        music_text->SetVisible(false);
        speed_text->SetVisible(false);
        auto_play->SetVisible(false);
        name->SetVisible(false);
        game_back->SetVisible(false);
        for(auto& n:character){
            n.second->SetVisible(false);
        }
        skip->SetEnable(false);
        skip->SetVisible(false);
        SDL_SetTextureAlphaMod(start_game->_t,0);
        SDL_SetTextureAlphaMod(load->_t,0);
        SDL_SetTextureAlphaMod(enter_cg->_t,0);
        SDL_SetTextureAlphaMod(main_option->_t,0);
        SDL_SetTextureAlphaMod(quit->_t,0);
        SDL_SetTextureAlphaMod(main_back->cg,0);
        main_back->handle=true;
        _belong->AddTask((void(*)(void*))MainFadein1,this,51,true,false,(void(*)(void*))MainFadein2,this);
    }
    void GameScene::EnterOption(){
        bgm_text->SetVisible(true);
        bgm_text->SetEnable(true);
        music_list->SetVisible(true);
        music_list->SetEnable(true);
        language_select->SetEnable(true);
        language_select->SetVisible(true);
        save_name->SetEnable(false);
        save_name->SetVisible(false);
        dialog_state=dialog->enable();
        name_state=name->visible();
        _enabled=false;
        _visible=false;
        main_option->SetVisible(false);
        main_option->SetEnable(false);
        go_save->SetEnable(false);
        go_save->SetVisible(false);
        go_load->SetEnable(false);
        go_load->SetVisible(false);
        general_back->SetVisible(true);
        general_back->SetEnable(false);
        main_back->SetVisible(false);
        start_game->SetVisible(false);
        load->SetVisible(false);
        enter_cg->SetVisible(false);
        quit->SetVisible(false);
        main_back->SetEnable(false);
        start_game->SetEnable(false);
        load->SetEnable(false);
        enter_cg->SetEnable(false);
        quit->SetEnable(false);
        cg_go_back->SetEnable(false);
        cg_view->SetEnable(false);
        save_go_back->SetEnable(false);
        confirm->SetEnable(false);
        save_list->SetEnable(false);
        option_go_back->SetEnable(true);
        effect_box->SetEnable(true);
        music_box->SetEnable(true);
        effect_bar->SetEnable(true);
        music_bar->SetEnable(true);
        speed_normal->SetEnable(true);
        speed_fast->SetEnable(true);
        effect_text->SetEnable(true);
        music_text->SetEnable(true);
        speed_text->SetEnable(true);
        auto_play->SetEnable(false);
        name->SetEnable(false);
        game_back->SetEnable(false);
        dialog->SetEnable(false);
        cg_go_back->SetVisible(false);
        cg_view->SetVisible(false);
        save_go_back->SetVisible(false);
        confirm->SetVisible(false);
        save_list->SetVisible(false);
        option_go_back->SetVisible(true);
        effect_box->SetVisible(true);
        music_box->SetVisible(true);
        effect_bar->SetVisible(true);
        music_bar->SetVisible(true);
        speed_normal->SetVisible(true);
        speed_fast->SetVisible(true);
        effect_text->SetVisible(true);
        music_text->SetVisible(true);
        speed_text->SetVisible(true);
        auto_play->SetVisible(false);
        name->SetVisible(false);
        game_back->SetVisible(false);
        for(auto& n:character){
            n.second->SetVisible(false);
        }
        skip->SetEnable(false);
        skip->SetVisible(false);
    }
    void GameScene::EnterGame(){
        bgm_text->SetVisible(false);
        bgm_text->SetEnable(false);
        music_list->SetVisible(false);
        music_list->SetEnable(false);
        language_select->SetEnable(false);
        language_select->SetVisible(false);
        skip->SetEnable(true);
        skip->SetVisible(true);
        dialog->SetEnable(true);
        save_name->SetEnable(false);
        save_name->SetVisible(false);
        _enabled=true;
        _visible=true;
        main_option->SetVisible(false);
        main_option->SetEnable(false);
        in_main=false;
        general_back->SetVisible(false);
        general_back->SetEnable(false);
        main_back->SetVisible(false);
        start_game->SetVisible(false);
        load->SetVisible(false);
        enter_cg->SetVisible(false);
        quit->SetVisible(false);
        main_back->SetEnable(false);
        start_game->SetEnable(false);
        load->SetEnable(false);
        enter_cg->SetEnable(false);
        quit->SetEnable(false);
        cg_go_back->SetEnable(false);
        cg_view->SetEnable(false);
        save_go_back->SetEnable(false);
        confirm->SetEnable(false);
        save_list->SetEnable(false);
        option_go_back->SetEnable(false);
        effect_box->SetEnable(false);
        music_box->SetEnable(false);
        effect_bar->SetEnable(false);
        music_bar->SetEnable(false);
        speed_normal->SetEnable(false);
        speed_fast->SetEnable(false);
        effect_text->SetEnable(false);
        music_text->SetEnable(false);
        speed_text->SetEnable(false);
        auto_play->SetEnable(true);
        go_load->SetEnable(true);
        go_load->SetVisible(true);
        name->SetEnable(false);
        game_back->SetEnable(false);
        cg_go_back->SetVisible(false);
        cg_view->SetVisible(false);
        save_go_back->SetVisible(false);
        confirm->SetVisible(false);
        save_list->SetVisible(false);
        option_go_back->SetVisible(false);
        effect_box->SetVisible(false);
        music_box->SetVisible(false);
        effect_bar->SetVisible(false);
        music_bar->SetVisible(false);
        speed_normal->SetVisible(false);
        speed_fast->SetVisible(false);
        effect_text->SetVisible(false);
        music_text->SetVisible(false);
        speed_text->SetVisible(false);
        auto_play->SetVisible(true);
        game_back->SetVisible(true);
    }
    void GameScene::EnterCG(){
        bgm_text->SetVisible(false);
        bgm_text->SetEnable(false);
        music_list->SetVisible(false);
        music_list->SetEnable(false);
        language_select->SetEnable(false);
        language_select->SetVisible(false);
        _enabled=false;
        _visible=false;
        main_option->SetVisible(false);
        main_option->SetEnable(false);
        go_save->SetEnable(false);
        go_save->SetVisible(false);
        go_load->SetEnable(false);
        go_load->SetVisible(false);
        general_back->SetVisible(true);
        general_back->SetEnable(false);
        main_back->SetVisible(false);
        start_game->SetVisible(false);
        load->SetVisible(false);
        enter_cg->SetVisible(false);
        quit->SetVisible(false);
        main_back->SetEnable(false);
        start_game->SetEnable(false);
        load->SetEnable(false);
        enter_cg->SetEnable(false);
        quit->SetEnable(false);
        cg_go_back->SetEnable(true);
        cg_view->SetEnable(true);
        save_go_back->SetEnable(false);
        confirm->SetEnable(false);
        save_list->SetEnable(false);
        option_go_back->SetEnable(false);
        effect_box->SetEnable(false);
        music_box->SetEnable(false);
        effect_bar->SetEnable(false);
        music_bar->SetEnable(false);
        speed_normal->SetEnable(false);
        speed_fast->SetEnable(false);
        effect_text->SetEnable(false);
        music_text->SetEnable(false);
        speed_text->SetEnable(false);
        auto_play->SetEnable(false);
        skip->SetEnable(false);
        skip->SetVisible(false);
        name->SetEnable(false);
        game_back->SetEnable(false);
        dialog->SetEnable(false);
        cg_go_back->SetVisible(true);
        cg_view->SetVisible(true);
        save_go_back->SetVisible(false);
        confirm->SetVisible(false);
        save_list->SetVisible(false);
        option_go_back->SetVisible(false);
        effect_box->SetVisible(false);
        music_box->SetVisible(false);
        effect_bar->SetVisible(false);
        music_bar->SetVisible(false);
        speed_normal->SetVisible(false);
        speed_fast->SetVisible(false);
        effect_text->SetVisible(false);
        music_text->SetVisible(false);
        speed_text->SetVisible(false);
        auto_play->SetVisible(false);
        name->SetVisible(false);
        game_back->SetVisible(false);
        for(auto& n:character){
            n.second->SetVisible(false);
        }
    }
    void GameScene::GameBackFadein(LayerImage* g){
        g->SetAlpha(g->Alpha()+5);
    }
    void GameScene::EnterSave(){
        bgm_text->SetVisible(false);
        bgm_text->SetEnable(false);
        music_list->SetVisible(false);
        music_list->SetEnable(false);
        language_select->SetEnable(false);
        language_select->SetVisible(false);
        skip->SetEnable(false);
        skip->SetVisible(false);
        save_name->SetEnable(true);
        save_name->SetVisible(true);
        is_load=false;
        dialog_state=dialog->enable();
        name_state=name->visible();
        _enabled=false;
        _visible=false;
        main_option->SetVisible(false);
        main_option->SetEnable(false);
        general_back->SetVisible(true);
        general_back->SetEnable(false);
        go_save->SetEnable(false);
        go_save->SetVisible(false);
        go_load->SetEnable(false);
        go_load->SetVisible(false);
        main_back->SetVisible(false);
        start_game->SetVisible(false);
        load->SetVisible(false);
        enter_cg->SetVisible(false);
        quit->SetVisible(false);
        main_back->SetEnable(false);
        start_game->SetEnable(false);
        load->SetEnable(false);
        enter_cg->SetEnable(false);
        quit->SetEnable(false);
        cg_go_back->SetEnable(false);
        cg_view->SetEnable(false);
        save_go_back->SetEnable(true);
        confirm->SetEnable(true);
        save_list->SetEnable(true);
        option_go_back->SetEnable(false);
        effect_box->SetEnable(false);
        music_box->SetEnable(false);
        effect_bar->SetEnable(false);
        music_bar->SetEnable(false);
        speed_normal->SetEnable(false);
        speed_fast->SetEnable(false);
        effect_text->SetEnable(false);
        music_text->SetEnable(false);
        speed_text->SetEnable(false);
        auto_play->SetEnable(false);
        name->SetEnable(false);
        game_back->SetEnable(false);
        dialog->SetEnable(false);
        cg_go_back->SetVisible(false);
        cg_view->SetVisible(false);
        save_go_back->SetVisible(true);
        confirm->SetVisible(true);
        save_list->SetVisible(true);
        option_go_back->SetVisible(false);
        effect_box->SetVisible(false);
        music_box->SetVisible(false);
        effect_bar->SetVisible(false);
        music_bar->SetVisible(false);
        speed_normal->SetVisible(false);
        speed_fast->SetVisible(false);
        effect_text->SetVisible(false);
        music_text->SetVisible(false);
        speed_text->SetVisible(false);
        auto_play->SetVisible(false);
        name->SetVisible(false);
        game_back->SetVisible(false);
        for(auto& n:character){
            n.second->SetVisible(false);
        }
    }
    void GameScene::EnterLoad(){
        bgm_text->SetVisible(false);
        bgm_text->SetEnable(false);
        music_list->SetVisible(false);
        music_list->SetEnable(false);
        language_select->SetEnable(false);
        language_select->SetVisible(false);
        skip->SetEnable(false);
        skip->SetVisible(false);
        save_name->SetEnable(true);
        save_name->SetVisible(true);
        is_load=true;
        dialog_state=dialog->enable();
        name_state=name->visible();
        _enabled=false;
        _visible=false;
        main_option->SetVisible(false);
        main_option->SetEnable(false);
        general_back->SetVisible(true);
        general_back->SetEnable(false);
        go_save->SetEnable(false);
        go_save->SetVisible(false);
        go_load->SetEnable(false);
        go_load->SetVisible(false);
        main_back->SetVisible(false);
        start_game->SetVisible(false);
        load->SetVisible(false);
        enter_cg->SetVisible(false);
        quit->SetVisible(false);
        main_back->SetEnable(false);
        start_game->SetEnable(false);
        load->SetEnable(false);
        enter_cg->SetEnable(false);
        quit->SetEnable(false);
        cg_go_back->SetEnable(false);
        cg_view->SetEnable(false);
        save_go_back->SetEnable(true);
        confirm->SetEnable(true);
        save_list->SetEnable(true);
        option_go_back->SetEnable(false);
        effect_box->SetEnable(false);
        music_box->SetEnable(false);
        effect_bar->SetEnable(false);
        music_bar->SetEnable(false);
        speed_normal->SetEnable(false);
        speed_fast->SetEnable(false);
        effect_text->SetEnable(false);
        music_text->SetEnable(false);
        speed_text->SetEnable(false);
        auto_play->SetEnable(false);
        name->SetEnable(false);
        game_back->SetEnable(false);
        dialog->SetEnable(false);
        cg_go_back->SetVisible(false);
        cg_view->SetVisible(false);
        save_go_back->SetVisible(true);
        confirm->SetVisible(true);
        save_list->SetVisible(true);
        option_go_back->SetVisible(false);
        effect_box->SetVisible(false);
        music_box->SetVisible(false);
        effect_bar->SetVisible(false);
        music_bar->SetVisible(false);
        speed_normal->SetVisible(false);
        speed_fast->SetVisible(false);
        effect_text->SetVisible(false);
        music_text->SetVisible(false);
        speed_text->SetVisible(false);
        auto_play->SetVisible(false);
        name->SetVisible(false);
        game_back->SetVisible(false);
        for(auto& n:character){
            n.second->SetVisible(false);
        }
    }   
}